home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_c / cgraphix / cmovpoly.c < prev    next >
Text File  |  1986-05-28  |  3KB  |  158 lines

  1. /* «RM120»«PL99999»«TS4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76» */
  2. #include    <stdio.h>
  3. #define    EXTERN    extern
  4. #include    <typedef.h>
  5.  
  6.  
  7.     int        ArrowAngle;
  8.     int        Ch, cont;
  9.     PlotArray    Arrow;
  10.     double    CurrX,CurrY,IncrX,IncrY,Size,Speed;
  11.     double    ArrowIncr[16];
  12.  
  13.  
  14. void MakeArrow()
  15. {
  16.     Arrow[0] = 0;
  17.     Arrow[1] = 0;
  18.     Arrow[2] = Size;
  19.     Arrow[3] = -Size;
  20.     Arrow[4] = 0;
  21.     Arrow[5] = Size;
  22.     Arrow[6] = -Size;
  23.     Arrow[7] = -Size;
  24.     Arrow[8] = 0;
  25.     Arrow[9] = 0;
  26. }
  27.  
  28.  
  29. void MakeMoveTable()
  30. {
  31.     ArrowIncr[0] = 0;
  32.     ArrowIncr[1] = 1;
  33.     ArrowIncr[2] = -1;
  34.     ArrowIncr[3] = 1;
  35.     ArrowIncr[4] = -1;
  36.     ArrowIncr[5] = 0;
  37.     ArrowIncr[6] = -1;
  38.     ArrowIncr[7] = -1;
  39.     ArrowIncr[8] = 0;
  40.     ArrowIncr[9] = -1;
  41.     ArrowIncr[10] = 1;
  42.     ArrowIncr[11] = -1;
  43.     ArrowIncr[12] = 1;
  44.     ArrowIncr[13] = 0;
  45.     ArrowIncr[14] = 1;
  46.     ArrowIncr[15] = 1;
  47. }
  48.  
  49.  
  50. void MoveForward()
  51. {
  52.     SetColorBlack();
  53.     DrawPolygon(Arrow,0,-5,0,0,0);
  54.     CurrX = CurrX+IncrX;
  55.     CurrY = CurrY+IncrY;
  56.     TranslatePolygon(Arrow,5,IncrX,IncrY);
  57.     SetColorWhite();
  58.     DrawPolygon(Arrow,0,-5,0,0,0);
  59. }
  60.  
  61.  
  62. void MoveBack()
  63. {
  64.     SetColorBlack();
  65.     DrawPolygon(Arrow,0,-5,0,0,0);
  66.     CurrX = CurrX-IncrX;
  67.     CurrY = CurrY-IncrY;
  68.     TranslatePolygon(Arrow,5,-IncrX,-IncrY);
  69.     SetColorWhite();
  70.     DrawPolygon(Arrow,0,-5,0,0,0);
  71. }
  72.  
  73.  
  74. void TurnLeft()
  75. {
  76.     SetColorBlack();
  77.     DrawPolygon(Arrow,0,-5,0,0,0);
  78.     RotatePolygon(Arrow, 5, 45.);
  79.     ArrowAngle = ArrowAngle+1;
  80.     if (ArrowAngle > 7)
  81.         ArrowAngle = 0;
  82.     IncrX = Speed * ArrowIncr[2 * ArrowAngle];
  83.     IncrY = Speed * ArrowIncr[2 * ArrowAngle + 1];
  84.     SetColorWhite();
  85.     DrawPolygon(Arrow,0,-5,0,0,0);
  86. }
  87.  
  88.  
  89. void TurnRight()
  90. {
  91.     SetColorBlack();
  92.     DrawPolygon(Arrow,0,-5,0,0,0);
  93.     RotatePolygon(Arrow, 5, -45.);
  94.     ArrowAngle = ArrowAngle-1;
  95.     if (ArrowAngle < 0)
  96.         ArrowAngle = 7;
  97.     IncrX = Speed * ArrowIncr[ArrowAngle * 2];
  98.     IncrY = Speed * ArrowIncr[ArrowAngle * 2 + 1];
  99.     SetColorWhite();
  100.     DrawPolygon(Arrow,0,-5,0,0,0);
  101. }
  102.  
  103.  
  104. main()
  105. {
  106.  
  107.     InitGraphic();
  108.     DefineWindow(1,0,0,XMaxGlb,YMaxGlb);
  109.     DefineWorld(1, -1000., -1000., 1000., 1000.);
  110.     SelectWorld(1);
  111.     SelectWindow(1);
  112.     SetBackground(0);
  113.  
  114.     Size = 100;
  115.     Speed = 30;
  116.     CurrX = 0;
  117.     CurrY = 0;
  118.     ArrowAngle = 0;
  119.     IncrX = 0;
  120.     IncrY = Speed;
  121.  
  122.     MakeArrow();
  123.     MakeMoveTable();
  124.     DrawPolygon(Arrow,0,5,0,0,0);
  125.  
  126.     cont = 1;
  127.     while(cont) {
  128.         Ch = inkey();
  129.         switch(Ch) {
  130.             case '8':
  131.             case -72:
  132.                 MoveForward();
  133.                 break;
  134.             case '4':
  135.             case -75:
  136.                 TurnLeft();
  137.                 break;
  138.             case '6':
  139.             case -77:
  140.                 TurnRight();
  141.                 break;
  142.             case '2':
  143.             case -80 :
  144.                 MoveBack();
  145.                 break;
  146.             case ' ':
  147.                 cont = 0;
  148.                 break;
  149.             default:
  150.                 break;
  151.         }
  152.     }
  153.  
  154.     LeaveGraphic();
  155. }
  156.  
  157.  
  158.